package com.zhongchaowuye.filter;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @program: 中超物业（excel系统）
 * @author：张雁佳
 * @create: 2024-11-20
 * @description: web端过滤器实现
 */
public class WebFilter implements Filter
{
	private int num=0;
	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		// TODO Auto-generated method stub
	}
	
	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException 
	{
		HttpServletRequest req = (HttpServletRequest)request;
		HttpServletResponse res = (HttpServletResponse)response; 
		String root = req.getContextPath();//获取应用程序上下文，由于tomcat部署时指定的是"/"，因此这里root取值为""；
		System.out.println("当前的上下文root=="+root);
		String curRequestUrl = req.getRequestURI();//获取请求的url
		System.out.println("当前的请求的url=="+curRequestUrl);
		
		//需要有一个从session中 取当前用户的操作，如果session过期的话，取到的值就是null
		//Login login=(Login)req.getSession().getAttribute("login");
		
		List<String> whiteUrl=new ArrayList<String>(); //定义url白名单 
		whiteUrl.add("/login.html");
		whiteUrl.add("/error.html");
		whiteUrl.add("/common"); //公用部分
		whiteUrl.add("/general");
		whiteUrl.add("/login"); //接口部分
		whiteUrl.add("/a_GYSh");
		whiteUrl.add("/a_ZD");
		whiteUrl.add("/a_ZhL");
		whiteUrl.add("/a_ZhL_PZh");
		whiteUrl.add("/b_HT");
		
		boolean filter_rst=false;
		for(int i=0;i<whiteUrl.size();i++){
			String str=whiteUrl.get(i);
			if(curRequestUrl.contains(str)){
				filter_rst=true; //如果比对上，则白名单判断变量置为true
				break;
			}
		}
		if(curRequestUrl.equals("/")){
			filter_rst=true; //初始链接，白名单判断变量置为true
		}
		//根据结果决定跳转方向
		//以下71-82行是正式代码，临时注掉
//		if(filter_rst){
//			chain.doFilter(request, response); //当前正式代码
//		}else{
//			if(login==null)	{ //如果session中不存在登录的用户
//				//统一到错误页面中
//				//跳转地址也需要根据实际情况改
//				//res.sendRedirect("http://192.168.18.118/error.html"); //服务器版本
//				res.sendRedirect("http://localhost:8090/error.html"); //本机调试
//			}else{ //如果session存在用户，就直接放行；
//				chain.doFilter(request, response);		
//			}
//		}
		
		chain.doFilter(request, response); //如果放开71-82行，这行需要注掉，测试状态下放开本行
	}
	
	@Override
	public void destroy() {
		// TODO Auto-generated method stub
	}
}
